home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / etc / init.d / kdm < prev    next >
Text File  |  2008-10-24  |  6KB  |  190 lines

  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          x-display-manager kdm
  4. # Required-Start:    $local_fs $remote_fs hal
  5. # Required-Stop:     $local_fs $remote_fs hal
  6. # Should-Start:      console-screen
  7. # Should-Stop:       console-screen
  8. # Default-Start:     2 3 4 5
  9. # Default-Stop:      0 1 6
  10. # Short-Description: X display manager for KDE
  11. # Description:       KDM manages a collection of X servers, which may be on the local host or remote machines.
  12. ### END INIT INFO
  13. # /etc/init.d/kdm: start or stop the X display manager
  14. # Script originally stolen from the xdm package
  15. #
  16. # description: K Display Manager
  17. #
  18. set -e
  19.  
  20. # Import the LSB init functions
  21. . /lib/lsb/init-functions
  22.  
  23. # To start kdm even if it is not the default display manager, change
  24. # HEED_DEFAULT_DISPLAY_MANAGER to "false."
  25. HEED_DEFAULT_DISPLAY_MANAGER=true
  26. DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
  27.  
  28. PATH=/bin:/usr/bin:/sbin:/usr/sbin
  29. DAEMON=/usr/bin/kdm
  30. PIDFILE=/var/run/kdm.pid
  31. UPGRADEFILE=/var/run/kdm.upgrade
  32.  
  33. # parameters to support kdm customization
  34. KDMRC=/etc/kde4/kdm/kdmrc
  35. BACKGROUNDRC=/etc/kde4/kdm/backgroundrc
  36.  
  37. #if configuration is changed by kdmtheme or other tools, don't do magick
  38. if grep -q "Theme=@@@ToBeReplacedByDesktopBase@@@" ${KDMRC} && grep -q "Wallpaper=default_blue.jpg" ${BACKGROUNDRC}
  39. then
  40.  
  41.  
  42.  
  43. KDMOVERRIDEDIR=/etc/default/kdm.d
  44. KDMCFGDIR=/var/run/kdm
  45. KDMCFG=$KDMCFGDIR/kdmrc
  46. BACKGROUNDCFG=$KDMCFGDIR/backgroundrc
  47.  
  48. test -x $DAEMON || exit 0
  49.  
  50. # uncomment, if you want auto-logon to be runlevel-dependant
  51. #test "$runlevel" || { runlevel=`runlevel`; runlevel=${runlevel#* }; }
  52. #test "$runlevel" = 4 && ARG=-autolog || ARG=-noautolog
  53.  
  54. # uncomment, if you want tons of debug info in your syslog
  55. #ARG="$ARG -debug 255"
  56.  
  57. # we use an alternative kdm master configuration file
  58. ARG="$ARG -config $KDMCFG"
  59.  
  60. # we source overrides. run-parts sorts the list in a predictable order
  61. if [ -d "$KDMOVERRIDEDIR" ]; then
  62.     for part in $(run-parts --list "$KDMOVERRIDEDIR" 2>/dev/null || true); do
  63.         . "$part"
  64.     done
  65. fi
  66.  
  67. # we generate kdm configuration files
  68. genkdmconf --in $KDMCFGDIR 1> /dev/null
  69.  
  70. # we update kdm configuration files (only overridden values)
  71. [ -n "$USEBACKGROUND" ] && sed -i "s|^#\?UseBackground=.*|UseBackground=$USEBACKGROUND|" $KDMCFG
  72. [ -n "$BACKGROUNDCFG" ] && sed -i "s|^#\?BackgroundCfg=.*|BackgroundCfg=$BACKGROUNDCFG|" $KDMCFG
  73. [ -n "$USETHEME" ] && sed -i "s|^#\?UseTheme=.*|UseTheme=$USETHEME|" $KDMCFG
  74. [ -n "$THEME" ] && sed -i "s|^#\?Theme=.*|Theme=$THEME|" $KDMCFG
  75. [ -n "$WALLPAPER" ] && sed -i "s|^#\?Wallpaper=.*|Wallpaper=`readlink -f $WALLPAPER`|" $BACKGROUNDCFG
  76.  
  77.  
  78. fi
  79. # autologin overrides are useful for live debian environment
  80. if [ -n "$AUTOLOGINUSER" ]; then
  81.     sed -i "s|^#\?AutoLoginEnable=.*|AutoLoginEnable=true|" $KDMCFG
  82.     sed -i "s|^#\?AutoLoginUser=.*|AutoLoginUser=$AUTOLOGINUSER|" $KDMCFG
  83. fi
  84. [ -n "$AUTOLOGINDELAY" ] && sed -i "s|^#\?AutoLoginDelay=.*|AutoLoginDelay=$AUTOLOGINDELAY|" $KDMCFG
  85. [ -n "$AUTOLOGINAGAIN" ] && sed -i "s|^#\?AutoLoginAgain=.*|AutoLoginAgain=$AUTOLOGINAGAIN|" $KDMCFG
  86. [ -n "$AUTOLOGINLOCKED" ] && sed -i "s|^#\?AutoLoginLocked=.*|AutoLoginLocked=$AUTOLOGINLOCKED|" $KDMCFG
  87.  
  88. # If we upgraded the daemon, we can't use the --exec argument to
  89. # start-stop-daemon since the inode will have changed.  The risk here is that
  90. # in a situation where the daemon died, its pidfile was not cleaned up, and
  91. # some other process is now running under that pid, start-stop-daemon will send
  92. # signals to an innocent process.  However, this seems like a corner case.
  93. # C'est la vie!
  94. if [ -e $UPGRADEFILE ]; then
  95.   SSD_ARGS="--pidfile $PIDFILE --startas $DAEMON"
  96. else
  97.   SSD_ARGS="--pidfile $PIDFILE --exec $DAEMON"
  98. fi
  99.  
  100. stillrunning () {
  101.   if expr "$(cat /proc/$DAEMONPID/cmdline 2> /dev/null)" : "$DAEMON" > /dev/null 2>&1; then
  102.     true
  103.   else
  104.     # if the daemon does not remove its own pidfile, we will
  105.     rm -f $PIDFILE $UPGRADEFILE
  106.     false
  107.   fi;
  108. }
  109.  
  110. case "$1" in
  111.   start)
  112.     if [ -e $DEFAULT_DISPLAY_MANAGER_FILE ] &&
  113.        [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] &&
  114.        [ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE)" != "$DAEMON" ]; then
  115.       echo "Not starting K Display Manager (kdm); it is not the default display manager."
  116.     else
  117.       echo -n "Starting K Display Manager: kdm"
  118.       start-stop-daemon --start --quiet $SSD_ARGS -- $ARG || echo -n " already running"
  119.       echo "."
  120.     fi
  121.   ;;
  122.  
  123.   restart)
  124.     /etc/init.d/kdm stop
  125.     if [ -f $PIDFILE ]; then
  126.       if stillrunning; then
  127.         exit 1
  128.       fi
  129.     fi
  130.     /etc/init.d/kdm start
  131.   ;;
  132.  
  133.   reload)
  134.     echo -n "Reloading K Display Manager configuration..."
  135.     if start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; then
  136.       echo "done."
  137.     else
  138.       echo "kdm not running."
  139.     fi
  140.   ;;
  141.  
  142.   force-reload)
  143.     /etc/init.d/kdm reload
  144.   ;;
  145.  
  146.   stop)
  147.     echo -n "Stopping K Display Manager: kdm"
  148.     if [ ! -f $PIDFILE ]; then
  149.       echo " not running ($PIDFILE not found)."
  150.       exit 0
  151.     else
  152.       DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]')
  153.       KILLCOUNT=1
  154.       if [ ! -e $UPGRADEFILE ]; then
  155.         if start-stop-daemon --stop --quiet $SSD_ARGS; then
  156.           # give kdm's signal handler a second to catch its breath
  157.           sleep 1
  158.         else
  159.           echo -n " not running"
  160.         fi
  161.       fi
  162.       while [ $KILLCOUNT -le 5 ]; do
  163.         if stillrunning; then
  164.           kill $DAEMONPID
  165.         else
  166.           break
  167.         fi
  168.         sleep 1
  169.         KILLCOUNT=$(( $KILLCOUNT + 1 ))
  170.       done
  171.       if stillrunning; then
  172.         echo -n " not responding to TERM signal (pid $DAEMONPID)"
  173.       else
  174.         rm -f $UPGRADEFILE
  175.       fi
  176.     fi
  177.     echo "."
  178.   ;;
  179.   status)
  180.     status_of_proc -p "$PIDFILE" "$DAEMON" kdm && exit 0 || exit $?
  181.   ;;
  182.  
  183.   *)
  184.     echo "Usage: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}"
  185.     exit 1
  186.     ;;
  187. esac
  188.  
  189. exit 0
  190.